/**
 * GisController - part of PerlaGis Architecture
 *
 * Copyright (C) 2010 Ricardo Gonzalez (gomnaz@gmail.com)
 * This program is free software: you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
 * Public License for more details.
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see http://www.gnu.org/licenses/
 */
package org.gis.controllers;

import java.util.List;
import javax.persistence.EntityManager;
import org.gis.entities.Sensori;
import org.gis.exceptions.NoSuchSensorException;

/**
 * Classe statica che gestisce i sensori nel database.
 * Permette di creare un nuovo sensore, di ottenere la lista di tutti i sensori
 * o di cercare un sensore nel database data la sua chiave.
 *
 * @author Ricardo Gonzaleez
 * @author Eva Gjeci
 */
public class Sensor {

    /**
     * Crea un nuovo oggetto <code>Sensori</code>, con nome pari al parametro
     *
     * @param name il nome del sensore
     * @return l'oggetto sensore
     */
    public static Sensori newSensor(String name) {
        Sensori s = new Sensori();
        s.setNome(name);
        return s;
    }

    /**
     * Restituisce la lista di tutti i sensori presenti nel database.
     *
     * @param em l'entity manager
     * @return la lista dei sensori
     */
    public static List<Sensori> getAll(EntityManager em) {
        List<Sensori> l = em.createNamedQuery("Sensori.findAll").getResultList();
        return l;
    }

    /**
     * Restituisce il sensore corrispondente alla chiave passata come parametro.
     *
     * @param idSensore la chiave del sensore
     * @param em l'entity manager
     * @return il sensore
     * @throws NoSuchSensorException se non esiste un sensore associato alla chiave
     */
    public static Sensori get(int idSensore, EntityManager em) throws NoSuchSensorException {
        Sensori s = (Sensori) em.createNamedQuery("Sensori.findByObjectid").setParameter("objectid", idSensore).getSingleResult();
        if (s == null) {
            throw new NoSuchSensorException(idSensore);
        }
        return s;
    }
}
